home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / idl / bonobo-2.0 / Bonobo_Storage.idl < prev    next >
Text File  |  2006-01-09  |  6KB  |  264 lines

  1. /*
  2.  * bonobo-storage.idl: Handles structured storage
  3.  *
  4.  * Copyright (C) 1999, 2000  Helix Code, Inc.
  5.  *
  6.  * Author:
  7.  *    Miguel de Icaza (miguel@gnu.org)
  8.  *    Dietmar Maurer (dietmar@maurer-it.com)
  9.  *
  10.  * Terms:
  11.  *
  12.  *    Storage:   This interface provides access to a directory
  13.  *               like storage facility. 
  14.  *
  15.  *    Stream:    Used to read and write bytes to a storage.  The
  16.  *               Streams are equivalent to files.
  17.  */
  18.  
  19. #ifndef BONOBO_STORAGE_IDL
  20. #define BONOBO_STORAGE_IDL
  21.  
  22. #include "Bonobo_Unknown.idl"
  23.  
  24. module Bonobo {
  25.  
  26.     typedef long StorageInfoFields;
  27.         const StorageInfoFields FIELD_CONTENT_TYPE = 1;
  28.         const StorageInfoFields FIELD_SIZE         = 2;
  29.         const StorageInfoFields FIELD_TYPE         = 4;
  30.  
  31.     typedef string ContentType;
  32.  
  33.     enum StorageType {
  34.         STORAGE_TYPE_REGULAR,
  35.         STORAGE_TYPE_DIRECTORY
  36.     };
  37.  
  38.     struct StorageInfo {
  39.         string        name;
  40.         StorageType     type;
  41.         ContentType    content_type;
  42.         long        size;
  43.     };
  44.  
  45.     interface Stream : Unknown {
  46.         typedef sequence<octet> iobuf;
  47.  
  48.         exception NoPermission {};
  49.         exception NotSupported {};
  50.         exception IOError {};
  51.  
  52.         enum SeekType {
  53.             SeekSet,
  54.             SeekCur,
  55.             SeekEnd
  56.         };
  57.  
  58.         /**
  59.          * getInfo:
  60.          * @mask:
  61.          *
  62.          * Returns a StorageInfo structure which contains
  63.          * the name, content_type and size info.
  64.          */
  65.         StorageInfo getInfo (in StorageInfoFields mask)
  66.             raises (IOError, NoPermission, NotSupported);
  67.         
  68.         /**    
  69.          * setInfo:
  70.          * @info:
  71.          * @mask:
  72.          *
  73.          */
  74.         void setInfo (in StorageInfo info, in StorageInfoFields mask)
  75.             raises (IOError, NoPermission, NotSupported);
  76.  
  77.         /**
  78.          * read:
  79.          * @count:  number of bytes to read.
  80.          * @buffer: the buffer where the data is returned.
  81.          */
  82.         void read (in long count, out iobuf buffer)
  83.             raises (NoPermission, IOError);
  84.     
  85.         /**
  86.          * write:
  87.          * @buffer: a buffer to write.
  88.          *
  89.          * writes the buffer to this stream.
  90.          */
  91.         void write (in iobuf buffer)
  92.             raises (NoPermission, IOError);
  93.  
  94.         /**
  95.          * seek:
  96.          * @offset: offset
  97.          * @whence: 
  98.          *
  99.          * Sets the read/write pointer to @offset (relative to @whence)
  100.          */
  101.         long seek (in long offset, in SeekType whence)
  102.             raises (IOError, NotSupported);
  103.  
  104.  
  105.         /**
  106.          * truncate:
  107.          * @length: new size of the stream
  108.          *
  109.          */
  110.         void truncate (in long length)
  111.             raises (IOError, NoPermission, NotSupported);
  112.     
  113.         /**
  114.          * commit:
  115.          *
  116.          * Commits any pending changes to the Storage
  117.          */
  118.         void commit ()
  119.             raises (IOError, NoPermission, NotSupported);
  120.         
  121.         /**
  122.          * revert:
  123.          *
  124.          * Discards any changes since the last commit.
  125.          */
  126.         void revert ()
  127.             raises (IOError, NoPermission, NotSupported);
  128.  
  129.         void unImplemented1 ();
  130.         void unImplemented2 ();
  131.     };
  132.  
  133.     interface Storage : Unknown {
  134.         
  135.         typedef sequence<StorageInfo> DirectoryList;
  136.  
  137.         typedef long OpenMode;
  138.         const OpenMode READ        = 1;
  139.         const OpenMode WRITE       = 2;
  140.         const OpenMode CREATE      = 4;
  141.         const OpenMode FAILIFEXIST = 8;
  142.         const OpenMode COMPRESSED  = 16;
  143.         const OpenMode TRANSACTED  = 32;
  144.  
  145.         exception IOError {};
  146.         exception NameExists {};
  147.         exception NotFound {};
  148.         exception NoPermission {};
  149.         exception NotSupported {};
  150.         exception NotStream {};
  151.         exception NotStorage {};
  152.         exception NotEmpty {};
  153.  
  154.         /**
  155.          * getInfo:
  156.          * @path:
  157.          * @mask:
  158.          *
  159.          * Returns a StorageInfo structure which contains
  160.          * the name, content_type and size info.
  161.          */
  162.         StorageInfo getInfo (in string path, 
  163.                      in StorageInfoFields mask)
  164.             raises (IOError, NoPermission, NotFound, NotSupported);
  165.         
  166.         /**    
  167.          * setInfo:
  168.          * @path:
  169.          * @info:
  170.          * @mask:
  171.          *
  172.          */
  173.         void setInfo (in string path, in StorageInfo info, 
  174.                   in StorageInfoFields mask)
  175.             raises (IOError, NoPermission, NotFound, NotSupported);
  176.  
  177.         /**
  178.          * openStream:
  179.          * @path: path of the stream to open
  180.          * @mode: open flags
  181.          *
  182.          * Opens a Stream whose name is @path.
  183.          */
  184.         Stream openStream (in string path, in OpenMode mode)
  185.             raises (IOError, NotFound, NoPermission, 
  186.                 NotStream, NameExists);
  187.  
  188.         /**
  189.          * openStorage:
  190.          * @path: path of the storage to open.
  191.          * @mode: open mode.
  192.          * 
  193.          * Returns a storage object for @path.
  194.          */
  195.         Storage openStorage (in string path, in OpenMode mode)
  196.             raises (IOError, NotFound, NoPermission, 
  197.                                 NotStorage, NameExists);
  198.  
  199.         /** 
  200.          * copyTo:
  201.          * @target: where to copy this storage to.
  202.          *
  203.          * Copies this storages contents to the @target storage
  204.          */
  205.         void copyTo (in Storage target)
  206.             raises (IOError, NoPermission);
  207.  
  208.         /**
  209.          * listContents:
  210.          * @path: path that we want to examine.
  211.          * @mask:
  212.          *
  213.          * Returns a list of all the Storage and Streams available
  214.          * at @path.
  215.          */
  216.         DirectoryList listContents (in string path, 
  217.                         in StorageInfoFields mask)
  218.             raises (IOError, NotStorage, NotFound, NotSupported);
  219.     
  220.         /**
  221.          * erase:
  222.          * @path: path to the element to erase.
  223.          * 
  224.          * Destroys the element pointed to by @path.  The element
  225.          * can be a Storage or a Stream.
  226.          */
  227.         void erase (in string path)
  228.                        raises (IOError, NoPermission, NotFound, NotEmpty);
  229.  
  230.         /** 
  231.          * rename:
  232.          * @path_name: element name to rename
  233.          * @new_path_name: new name we want to use
  234.          *
  235.          * Renames a Stream or Storage component inside a Storage.
  236.          */
  237.         void rename (in string path_name, in string new_path_name)
  238.             raises (IOError, NameExists, NotFound, NoPermission);
  239.  
  240.         /**
  241.          * commit:
  242.          * 
  243.          * Commits any pending changes to the Storage since it was
  244.          * opened.  This operation is syncronous.
  245.          */
  246.  
  247.         void commit ()
  248.             raises (IOError, NoPermission, NotSupported);
  249.  
  250.         /**
  251.          * revert:
  252.          *
  253.          * Discards any changes since the last commit.
  254.          */
  255.         void revert ()
  256.             raises (IOError, NoPermission, NotSupported);
  257.  
  258.         void unImplemented1 ();
  259.         void unImplemented2 ();
  260.     };
  261. };
  262.  
  263. #endif /* BONOBO_STORAGE_IDL */
  264.